/*
 * Entidade.java
 *
 * Created on 1 de Junho de 2007, 13:47
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package org.jerm.Interface.JGraph_Diagrama;

import java.awt.Color;
import java.util.Iterator;

import org.jerm.Mapeamento.Atributos.Atributo;
import org.jerm.Mapeamento.Atributos.AtributoBoolean;
import org.jerm.Mapeamento.Atributos.AtributoCaracter;
import org.jerm.Mapeamento.Atributos.AtributoDecimal;
import org.jerm.Mapeamento.Atributos.AtributoEnum;
import org.jerm.Mapeamento.Atributos.AtributoNumero;
import org.jerm.Mapeamento.Atributos.AtributoSerial;
import org.jerm.Mapeamento.Atributos.AtributoTexto;

/**
 *
 * @author Tiago Falcao
 */
public class Entidade extends BlocoAtributosGraphCell{
    protected static String viewEntidade="Interface.JGraph_Diagrama.EntidadeView";
    protected static String viewEntidadeFraca="Interface.JGraph_Diagrama.EntidadeFracaView";
    protected boolean Fraca=false;
    
    /** Creates a new instance of Entidade */
    public Entidade(String Nome) {
        this(20,20,Nome);
    }
    
    public Entidade(double x,double y, String Nome) {
        this(x,y,80,40,Color.white,Nome);
    }
    
    public Entidade(double x,double y, double w, double h, 
                    Color bg, String Nome){
        this(x,y,w,h,bg,Nome,viewEntidade);
    }
    
    
    public Entidade(double x,double y, double w, double h, 
                    Color bg, String Nome, String viewClass){
        super(x,y,w,h,bg,Nome,viewClass);
        this.viewClass=viewClass;
    }
    
    public void setFraca(boolean Fraca){
        this.Fraca=Fraca;
        if(this.Fraca)
            viewClass=viewEntidadeFraca;
        else
            viewClass=viewEntidade;
        
	JGraphCellViewFactory.setViewClass(this.getAttributes(), viewClass);
    }
    
    public boolean isFraca(){
        return Fraca;
    }
    
    
    
    public static void main(String[] args) {
    	AtributoSerial aserial;
        AtributoBoolean aboolean;
        AtributoNumero anumero;
        AtributoDecimal adecimal;
        AtributoEnum aenum;
        AtributoCaracter acaracter;
        AtributoTexto atexto;
        Entidade bloco=new Entidade("Pessoa");
        
        try
        {
            anumero=new AtributoNumero();
            anumero.setNome("ID");
            anumero.setTipo("Int");
            anumero.setUnsigned(true);
            anumero.setPadrao("NULL");
            anumero.setNulo(false);
            
            if(bloco.addAtributo(anumero))
                System.out.println("Sucesso\n");
            bloco.setPrimo("ID",true);
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
        
        try
        {
            acaracter=new AtributoCaracter();
            acaracter.setNome("Nome");
            acaracter.setTipo("varchar");
            acaracter.setTamanho (10);
            acaracter.setCharSet("utf8");
            acaracter.setCollate("utf8-bin");
            acaracter.setNulo(false);
            bloco.addAtributo(acaracter);
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
        
        
        try
        {
            aenum=new AtributoEnum();
            aenum.setNome("Formacao");
            aenum.setTipo("ENUM");
            aenum.setPadrao("NULL");
            aenum.setNulo(true);
            bloco.addAtributo(aenum);
        } catch (Exception ex)
        {
            ex.printStackTrace();
        }
        
        if(! bloco.isEmptyAtributosPrimos()){
            System.out.println("Primos:");
            for (Iterator i = bloco.valuesAtributosPrimos().iterator(); i.hasNext();)
                System.out.println(((Atributo) i.next()).getNome());
        }
        
        if(! bloco.isEmptyAtributos()){
            System.out.println("\nNao Primos:");
            for (Iterator i = bloco.valuesAtributos().iterator(); i.hasNext();)
                System.out.println(((Atributo) i.next()).getNome());
        }
        
    }
    
}
